package com.dormitory.management.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dormitory.management.system.entity.Room;
import com.dormitory.management.system.entity.Student;
import com.dormitory.management.system.req.*;
import com.dormitory.management.system.resp.RoomResp;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 房间表 服务类
 * </p>
 *
 * @author
 * @since 2021-12-17
 */
public interface RoomService extends IService<Room> {
    /**
     * 添加房间
     * @param req 插入内容
     * @return
     */
    boolean save(RoomSaveReq req);

    /**
     * 批量添加房间
     * @param req 批量插入内容
     * @return
     */
    boolean saveBatch(RoomSaveBatchReq req);

    /**
     * 设置寝室长
     * @param req 房间id和寝室长id
     * @return
     */
    boolean saveLeader(RoomSaveLeaderReq req);

    /**
     * 删除房间
     * @param id 房间id
     * @return
     */
    boolean delete(Long id);

    /**
     * 删除楼栋全部房间
     * @param id 楼栋id
     * @return
     */
    boolean deleteAll(Long id);

    /**
     * 更新房间信息
     * @param req 更新内容
     * @return
     */
    boolean update(RoomUpdateReq req);

    /**
     * 根据查询条件分页查询
     * @param req 查询条件
     * @return 分页列表
     */
    IPage<RoomResp> getPage(RoomPageReq req);

    /**
     * 获取显示剩余人数的房间列表
     * @param id 楼栋id
     * @return 列表
     */
    List<RoomResp> getList(Long id);

    /**
     * 获取当前房间内的学生列表
     * @param id 房间id
     * @return 列表
     */
    List<Student> getStuList(Long id);
}
